package com.hsgene.order.service;

import com.hsgene.common.util.result.ApiResult;
import com.hsgene.common.util.result.NullObject;
import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.common.util.support.Pagination;
import com.hsgene.order.condition.AgencyOrderCondition;
import com.hsgene.order.domain.OrderPackageDetail;
import com.hsgene.order.domain.SendReport;
import com.hsgene.order.dto.agency.AgencyOrderDetailDto;
import com.hsgene.order.dto.agency.AgencyOrderDto;
import com.hsgene.order.dto.agency.SampleConfirmDto;

import java.util.List;
import java.util.Map;

/**
 * @desc: 机构订单service
 * @author: 江承良
 * @date: 2018/9/20 11:53
 */
public interface AgencyOrderService {

    /**
     * 机构订单列表
     *
     * @param condition              机构订单查询条件
     * @param geneticTestingAgencyId 检测机构id
     * @param limitHelper            分页条件
     * @return
     */
    ApiResult<Pagination<AgencyOrderDto>> queryAgencyOrders(AgencyOrderCondition condition, String
            geneticTestingAgencyId, LimitHelper limitHelper);

    /**
     * 机构订单管理——申请单查询
     *
     * @param geneticTestingOrderId 订单id
     * @return
     */
    ApiResult queryAgencyOrderRequisition(String geneticTestingOrderId);

    /**
     * @param
     * @return java.util.List<java.util.Map < java.lang.String , java.lang.Object>>
     * @description 获取所有检测机构
     * @author maodi
     * @createDate 2018/11/1 17:17
     */
    List<Map<String, Object>> agencies();

    /**
     * 上传报告
     *
     * @param orderPackageDetail
     * @return
     * @author FX
     * @date 2018/11/6 18:21
     */
    ApiResult uploadReport(OrderPackageDetail orderPackageDetail);

    /**
     * j寄送报告
     *
     * @param sendReport
     * @return
     * @author FX
     * @date 2018/11/8 18:16
     */
    ApiResult sendAReport(SendReport sendReport, String userId);

    /***
     * 机构确认样本弹窗信息展示
     * @author jcl
     * @date 2018/11/8 9:34
     * @param orderId 订单id
     * @param packageId 套餐id
     * @return
     */
    ApiResult<SampleConfirmDto> sampleConfirmInfo(String orderId, String packageId);

    /**
     * 机构确认样本
     *
     * @param sampleConfirmDto
     * @return
     * @author jcl
     * @date 2018/11/8 13:43
     */
    ApiResult<NullObject> sampleConfirm(SampleConfirmDto sampleConfirmDto, String userId);

    /***
     * 机构订单详情
     * @author jcl
     * @date 2018/11/12 10:01
     * @param orderId 订单id
     * @param packageId 套餐id
     * @return
     */
    ApiResult<AgencyOrderDetailDto> agencyOrderDetail(String orderId, String packageId);
}
